package aod.android.com.bernay.live.until;

import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.CountDownTimer;
import android.telephony.TelephonyManager;
import android.view.KeyEvent;

import java.util.ArrayList;

import aod.android.com.bernay.BernayApp;
import aod.android.com.bernay.live.view.CustomProgressDialog;

/**
 * <p>文件描述：上传文件进度条 <p>
 * <p>作者：${SYC}<p>
 * <p>创建时间：2019/4/17<p>
 */
public class Utils {
    /**
     * 系统自定义进度条
     */
    private static CustomProgressDialog progressDialog = null;

    /**
     * Activity 管理堆栈
     */
    private static ArrayList<Activity> activityStack = null;

    /**
     * 当前运行在顶部的Activity
     */
    public static Activity currentTopActivity = null;

    /**
     * 应用后台运行倒计时
     */
    private static CountDownTimer appExistTimer = null;

    /**
     * 网络访问运行倒计时
     */
    private static CountDownTimer progressExistTimer = null;


    /**
     * 进度对话框个数
     */
    private static int progressNum = 0;

    /**
     * 获取当前显示界面的Context <br>
     * 日期：2015年1月24日 <br>
     *
     * @author：davintan <br>
     * 返回类型：Context
     */
    public static Context getCurrentContext() {
        Context mContext = null;
        if (activityStack != null && activityStack.size() > 0) {
            mContext = activityStack.get(activityStack.size() - 1);
        } else {
            mContext = BernayApp.mContext;
        }
        return mContext;
    }

    /**
     * 获取当前显示界面的Activity对象 <br>
     * 日期：2015年9月24日 <br>
     *
     * @author：davintan <br>
     * 返回类型：Activity
     */
    public static Activity getCurrentActivity() {
        Activity activity = null;
        if (currentTopActivity != null && !currentTopActivity.isFinishing()) {
            return currentTopActivity;
        }
        if (activityStack != null && activityStack.size() > 0) {
            activity = activityStack.get(activityStack.size() - 1);
        }
        return activity;
    }

    /**
     * 加入Activity堆栈 <br>
     * 日期：2015年1月4日 <br>
     *
     * @author：davintan <br>
     * 返回类型：void
     */
    public static void addToStack(Activity act) {
        if (activityStack == null) {
            activityStack = new ArrayList<Activity>();
        }
        activityStack.add(act);
    }


    /**
     * 弹出Activity堆栈 <br>
     * 日期：2015年1月4日 <br>
     *
     * @author：davintan <br>
     * 返回类型：void
     */
    public static void popFromStack(Activity act) {
        if (activityStack == null) {
            activityStack = new ArrayList<Activity>();
        }
        activityStack.remove(act);
    }

    /**
     * 退出程序方法
     *
     * @param context
     */
    public static void exitApp(Context context) {
        if (activityStack != null) {
            for (Activity act : activityStack) {
                if (act != null) {
                    act.finish();
                    act = null;
                }
            }
        }
    }

    /**
     * 开始启动应用后台运行退出事件
     */
    public static void startExitAppTimer() {
        // 倒计时
        if (appExistTimer != null) {
            appExistTimer.cancel();
            appExistTimer = null;
        }
        // 15分钟
        long appTimer = 15 * 60 * 1000;
        appExistTimer = new CountDownTimer(appTimer, appTimer) {
            @Override
            public void onTick(long millisUntilFinished) {
            }

            @Override
            public void onFinish() {
                stopExitAppTimer();
                exitApp(getCurrentContext());
            }
        };
        appExistTimer.start();
    }





    /**
     * 开启进度条 <br>
     * 日期：2014年12月4日 <br>
     * 返回类型：void
     */
    public static void showProgress() {
        Activity activity = getCurrentActivity();
        if (activity != null && !activity.isFinishing()) {
            while (activity.getParent() != null) {
                activity = activity.getParent();
            }
            addProgress();
            if (progressDialog == null) {
             //   progressDialog = CustomProgressDialog.createDialog(activity);
                progressDialog.setCancelable(false);
            }
            if (progressDialog != null && !progressDialog.isShowing()) {
                progressDialog.show();
            }
        }
    }


    /**
     * 启动网络进度定时
     */
    public static void startProgressExitTimer() {
        if (progressExistTimer != null) {
            progressExistTimer.cancel();
            progressExistTimer = null;
        }
        long appTimer = 30 * 1000;
        progressExistTimer = new CountDownTimer(appTimer, appTimer) {
            @Override
            public void onTick(long millisUntilFinished) {
            }

            @Override
            public void onFinish() {
                // 定时时间到，关闭当前所有进度对话框
                progressNum = 0;
                Utils.dismissProgress();
            }
        };
        progressExistTimer.start();
    }

    /**
     * 增加一个进度对话框
     */
    private static void addProgress() {
        startProgressExitTimer();
        progressNum += 1;
    }

    /**
     * 减少一个进度对话框
     */
    private static void desProgress() {
        progressNum -= 1;
    }


    /**
     * 关闭进度条 <br>
     * 日期：2014年12月4日 <br>
     *
     * @author：davintan <br>
     * 返回类型：void
     */
    public static void dismissProgress() {
        desProgress();
        if (progressNum <= 0) {
            progressNum = 0;
            try {
                if (progressDialog != null)// && progressDialog.isShowing())
                {
                    progressDialog.dismiss();
                }
                progressDialog = null;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 关闭应用后台运行退出事件
     */
    public static void stopExitAppTimer() {
        // 倒计时
        if (appExistTimer != null) {
            appExistTimer.cancel();
            appExistTimer = null;
        }
    }
}
